//计算模块

class Calculate{
    
        //这个函数计算一共有多少注
        /**
         * 
         * @param {num} active 当前选中的号码个数
         * @param {string} play_name 当前的玩法
         * @return 一共有多少注
         * 
         * [只有确定了玩法,和当前选中号码的个数]
         */
        computeCount(active,play_name){
            //声明一个变量来告诉当前默认的个数为0
            let count =0;
            //判断玩法中,是不是包含这个值(值是否合法)
            const exist=this.play_list.has(play_name);
            //排列组合要生成一个数组(数组长度为active个,如果数组只是单一的接收一个数字的话)
            //fill()就是填充值,这里填充了字符串0
            const arr=new Array(active).fill('0');

            //如果监测通过,就传给第二个方法
            if(exist&&play_name.charat(0)==="r"){
                //这里将第二数字(玩法)传递给另外一个函数
                count=Calculate.combine(arr,play_name.split("")[1]);
            }
        }


        /**
         * [组合运算,静态方法<--在类当中的]
         * @param {array} arr [参与组合运算的数组] 
         * @param {*} size [参与组合运算的基数] 
         * 
         * 返回一共计算了多少注
         */
        static combine(arr,size){
            //这里我们要用到了递归
            let allResult=[];

            //第一次见到还有人这样使用递归
            (function f(arr,size,result){
                //判断当前传入数组的长度
                let arrLen=arr.length;
                //如果基数大于选定的数字(就不能视为一注)
                if(size>arrLen){
                    return;
                }
                //如果选择的和玩法相同(也就是,我选两个,玩法也是两个,那么这个就是一注)
                //这里push了添加了一个数组
                //初始的result是一个空数组
                if(size===arrLen){
                    allResult.push([].concat(result,arr));
                }else{
                    //这种情况的出现就是,我选的比玩法大(任二,我选3个这中情况)
                    //但是这边还是不能理解
                    //主要还是对排列组合这个不是很清楚
                    for(let i=0;i<arrLen;i++){
                        let newResult=[].concat(result);
                        newResult.push(arr[i]);
                        if(size===1){

                            allResult.push(newResult);

                        }else{

                            let newArr=[].concat(arr);
                            newArr.splice(0,i+1);
                            f(newArr,size-1,newResult);

                        }
                    }
                }
            })(arr,size,[]);
            return allResult;
        }

        /**
         * 计算金额
         */
        computeBonus(active,play_name){
             //拿到当前玩法的基数
             const play=play_name.split("");
            const self=this;
        

        }
    
    }






























